package org.springframework.beans.factory.support;

import org.springframework.beans.factory.BeanDefinitionStoreException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.config.BeanDefinition;

import java.util.List;
import java.util.Map;

public interface BeanDefinitionRegistry {
    void registerBootstrapBeanDefinition(String beanName,
                                         BeanDefinition beanDefinition) throws BeanDefinitionStoreException;

    void registerBeanDefinition(String beanName,
                                BeanDefinition beanDefinition) throws BeanDefinitionStoreException;

    List<String> getBeanDefinitionNames();

    BeanDefinition getBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;

    Map<String, BeanDefinition> getBeanDefinitionMap();

    Map<String, BeanDefinition> getBootstrapBeanDefinitionMap();

}
